local Color = {};

local AliasColors = {
	["aliceblue"]=0xf0f8ffff,
	["antiquewhite"]=0xfaebd7ff,
	["aqua"]=0x00ffffff,
	["aquamarine"]=0x7fffd4ff,
	["azure"]=0xf0ffffff,
	["beige"]=0xf5f5dcff,
	["bisque"]=0xffe4c4ff,
	["black"]=0x000000ff,
	["blanchedalmond"]=0xffebcdff,
	["blue"]=0x0000ffff,
	["blueviolet"]=0x8a2be2ff,
	["brown"]=0xa52a2aff,
	["burlywood"]=0xdeb887ff,
	["cadetblue"]=0x5f9ea0ff,
	["chartreuse"]=0x7fff00ff,
	["chocolate"]=0xd2691eff,
	["coral"]=0xff7f50ff,
	["cornflowerblue"]=0x6495edff,
	["cornsilk"]=0xfff8dcff,
	["crimson"]=0xdc143cff,
	["cyan"]=0x00ffffff,
	["darkblue"]=0x00008bff,
	["darkcyan"]=0x008b8bff,
	["darkgoldenrod"]=0xb8860bff,
	["darkgray"]=0xa9a9a9ff,
	["darkgreen"]=0x006400ff,
	["darkkhaki"]=0xbdb76bff,
	["darkmagenta"]=0x8b008bff,
	["darkolivegreen"]=0x556b2fff,
	["darkorange"]=0xff8c00ff,
	["darkorchid"]=0x9932ccff,
	["darkred"]=0x8b0000ff,
	["darksalmon"]=0xe9967aff,
	["darkseagreen"]=0x8fbc8fff,
	["darkslateblue"]=0x483d8bff,
	["darkslategray"]=0x2f4f4fff,
	["darkturquoise"]=0x00ced1ff,
	["darkviolet"]=0x9400d3ff,
	["deeppink"]=0xff1493ff,
	["deepskyblue"]=0x00bfffff,
	["dimgray"]=0x696969ff,
	["dodgerblue"]=0x1e90ffff,
	["feldspar"]=0xd19275ff,
	["firebrick"]=0xb22222ff,
	["floralwhite"]=0xfffaf0ff,
	["forestgreen"]=0x228b22ff,
	["fuchsia"]=0xff00ffff,
	["gainsboro"]=0xdcdcdcff,
	["ghostwhite"]=0xf8f8ffff,
	["gold"]=0xffd700ff,
	["goldenrod"]=0xdaa520ff,
	["gray"]=0x808080ff,
	["green"]=0x008000ff,
	["greenyellow"]=0xadff2fff,
	["honeydew"]=0xf0fff0ff,
	["hotpink"]=0xff69b4ff,
	["indianred"]=0xcd5c5cff,
	["indigo"]=0x4b0082ff,
	["ivory"]=0xfffff0ff,
	["khaki"]=0xf0e68cff,
	["lavender"]=0xe6e6faff,
	["lavenderblush"]=0xfff0f5ff,
	["lawngreen"]=0x7cfc00ff,
	["lemonchiffon"]=0xfffacdff,
	["lightblue"]=0xadd8e6ff,
	["lightcoral"]=0xf08080ff,
	["lightcyan"]=0xe0ffffff,
	["lightgoldenrodyellow"]=0xfafad2ff,
	["lightgrey"]=0xd3d3d3ff,
	["lightgreen"]=0x90ee90ff,
	["lightpink"]=0xffb6c1ff,
	["lightsalmon"]=0xffa07aff,
	["lightseagreen"]=0x20b2aaff,
	["lightskyblue"]=0x87cefaff,
	["lightslateblue"]=0x8470ffff,
	["lightslategray"]=0x778899ff,
	["lightsteelblue"]=0xb0c4deff,
	["lightyellow"]=0xffffe0ff,
	["lime"]=0x00ff00ff,
	["limegreen"]=0x32cd32ff,
	["linen"]=0xfaf0e6ff,
	["magenta"]=0xff00ffff,
	["maroon"]=0x800000ff,
	["mediumaquamarine"]=0x66cdaaff,
	["mediumblue"]=0x0000cdff,
	["mediumorchid"]=0xba55d3ff,
	["mediumpurple"]=0x9370d8ff,
	["mediumseagreen"]=0x3cb371ff,
	["mediumslateblue"]=0x7b68eeff,
	["mediumspringgreen"]=0x00fa9aff,
	["mediumturquoise"]=0x48d1ccff,
	["mediumvioletred"]=0xc71585ff,
	["midnightblue"]=0x191970ff,
	["mintcream"]=0xf5fffaff,
	["mistyrose"]=0xffe4e1ff,
	["moccasin"]=0xffe4b5ff,
	["navajowhite"]=0xffdeadff,
	["navy"]=0x000080ff,
	["oldlace"]=0xfdf5e6ff,
	["olive"]=0x808000ff,
	["olivedrab"]=0x6b8e23ff,
	["orange"]=0xffa500ff,
	["orangered"]=0xff4500ff,
	["orchid"]=0xda70d6ff,
	["palegoldenrod"]=0xeee8aaff,
	["palegreen"]=0x98fb98ff,
	["paleturquoise"]=0xafeeeeff,
	["palevioletred"]=0xd87093ff,
	["papayawhip"]=0xffefd5ff,
	["peachpuff"]=0xffdab9ff,
	["peru"]=0xcd853fff,
	["pink"]=0xffc0cbff,
	["plum"]=0xdda0ddff,
	["powderblue"]=0xb0e0e6ff,
	["purple"]=0x800080ff,
	["red"]=0xff0000ff,
	["rosybrown"]=0xbc8f8fff,
	["royalblue"]=0x4169e1ff,
	["saddlebrown"]=0x8b4513ff,
	["salmon"]=0xfa8072ff,
	["sandybrown"]=0xf4a460ff,
	["seagreen"]=0x2e8b57ff,
	["seashell"]=0xfff5eeff,
	["sienna"]=0xa0522dff,
	["silver"]=0xc0c0c0ff,
	["skyblue"]=0x87ceebff,
	["slateblue"]=0x6a5acdff,
	["slategray"]=0x708090ff,
	["snow"]=0xfffafaff,
	["springgreen"]=0x00ff7fff,
	["steelblue"]=0x4682b4ff,
	["tan"]=0xd2b48cff,
	["teal"]=0x008080ff,
	["thistle"]=0xd8bfd8ff,
	["tomato"]=0xff6347ff,
	["turquoise"]=0x40e0d0ff,
	["violet"]=0xee82eeff,
	["violetred"]=0xd02090ff,
	["wheat"]=0xf5deb3ff,
	["white"]=0xffffffff,
	["whitesmoke"]=0xf5f5f5ff,
	["yellow"]=0xffff00ff,
	["yellowgreen"]=0x9acd32ff,
}

function Color.ToColor(color)
	if (commonlib.IsNumber(color)) then return color & 0xffffffff end

	if (commonlib.IsString(color)) then
		color = string.lower(color);

		if (AliasColors[color] ~= nil) then return AliasColors[color] end

		if(string.match(color,"^#%x%x%x%x%x%x") or string.match(color,"^#%x%x%x%x%x%x%x%x")) then
			local r = tonumber("0x" .. string.sub(color, 2, 3)) or 255;
			local g = tonumber("0x" .. string.sub(color, 4, 5)) or 255;
			local b = tonumber("0x" .. string.sub(color, 6, 7)) or 255;
			local a = tonumber("0x" .. string.sub(color, 8, 9)) or 255;
			return (r << 24) + (g << 16) + (b << 8) + a;
		end

		if (string.match(color,"^rgba.+")) then
			r, g, b, a = string.match(color, "(%d+)[^%d]+(%d+)[^%d]+(%d+)[^%d]+(%d+)");
			r, g, b, a = tonumber(r) & 0xff, tonumber(g) & 0xff, tonumber(b) & 0xff, tonumber(a) & 0xff;
			return (r << 24) + (g << 16) + (b << 8) + a;
		end

		if(string.match(color,"^rgb.+")) then
			local r, g, b = string.match(color, "(%d+)[^%d]+(%d+)[^%d]+(%d+)");
			if (r and g and b) then
				return ((tonumber(r) & 0xff) << 24), ((tonumber(g) & 0xff) << 16), ((tonumber(b) & 0xff) << 8) + 0xff;
			end
		end
	end

	return 0;
end

return Color;


